import axios from "axios";
import store from "@/store";
import { Message } from "element-ui";
import router from "@/router";

// 创建axios实例
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // 基准地址
  // timeout: 5000, // 超时时间
});

// 请求拦截器
// 注入token
service.interceptors.request.use(
  (config) => {
    // console.log(123);
    // 判断有没有token
    const token = store.getters.token;
    const userId = store.getters.userId;
    if (token) {
      config.headers.Authorization = `Bearer ${token}`;
      config.headers["token"] = token;
    }
    if (userId) {
      // 如果需要，设置一个单独的请求头来包含userId
      config.headers["userId"] = userId;
    }
    return config;
  },
  (err) => {
    return Promise.reject(err);
  }
);

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    const res = response.data;
    if (res) {
      // 请求表示成功了
      return res;
    } else {
      // 进行一个错误的提示
      Message({
        type: "error",
        message: response.data.message || "请求出错了",
      });
      return Promise.reject(new Error(response.data.message || "请求出错了"));
    }
  },
  (err) => {
    console.log(err);
    if (err.response.status === 401) {
      // 退出登录，跳转到登录页面
      // 清空用户信息
      // 清空token
      store.dispatch("user/logout");
      // 跳转到登录
      router.push("/login");
      // 错误提示
      Message.info("登录状态已过期,请重新登录");
      return Promise.reject(err);
    }
  }
);

// 默认导出

export default service;
